home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.104 < prev    next >
Text File  |  1996-02-12  |  28KB  |  713 lines

  1. Frequently Asked Questions (FAQS);faqs.104
  2.  
  3.  
  4.  
  5. Chapter 10 is on user interfaces: it describes and illustrates
  6. the Smalltalk MVC paradigm (also: InterViews)
  7.  
  8. --
  9. Raimund K. Ege                             School of Computer Science
  10.                                              Florida Int'l University
  11. ege@scs.fiu.edu           (305) 348-3381              University Park
  12. ege@servax.bitnet     FAX (305) 348-3549              Miami, FL 33199
  13.  
  14. **
  15.  
  16. From: asmundvn@dcs.glasgow.ac.uk (Nils Erik Asmundvaag)
  17. Newsgroups: comp.lang.smalltalk
  18. Subject: Re: MVC -- good introductions?
  19. Date: 11 Mar 92 10:56:38 GMT
  20. Organization: Glasgow University Computing Science Dept.
  21.  
  22. The book
  23.  
  24.     Smalltalk-80: A Practical Introduction
  25.     (ISBN 0-273-03105-8)
  26.  
  27.     by Philip D. Gray & Ramzan Mohamed, 1990
  28.     and published by Pitman (at least in the UK)
  29.  
  30. contains two chapters on interactive applications and the MVC.
  31.  
  32. I found it very helpful when first learning about the MVC.
  33.  
  34. Nils E. Asmundvaag
  35.  
  36. --
  37. -------------------------------------------------------------------------------
  38. Nils Erik Asmundvaag                
  39. University of Glasgow, Scotland
  40. asmundvn@dcs.glasgow.ac.uk      asmundvn@uk.ac.glasgow.dcs
  41.  
  42.  
  43. **
  44.  
  45. From: bruce@utafll.uta.edu (Bruce Samuelson)
  46. Newsgroups: comp.lang.smalltalk
  47. Subject: Re: how are st80 views and controllers used?
  48. Date: 12 Mar 92 14:12:48 GMT
  49. Organization: UTexas at Arlington, Linguistics
  50.  
  51. There are two papers on MVC that provide an introductory overview of
  52. the pre-version 4.0 ST80 scheme.  Much of what's in them also applies
  53. to version 4.0.  I understand that one of PPS's priorities in the
  54. forthcoming version 4.1 will be improved documentation.  We'll see how
  55. well they explain the new windowing scheme launched in version 4.0.
  56. It would certainly be helpful to get an overview of what's going on
  57. before plunging into the source code of the myriad new classes.
  58.  
  59. (1) A Cookbook for using the Model-View-Controller User Interface
  60. Paradigm in Smalltalk-80 by Glenn E. Krasner and Stephen T. Pope,
  61. ParcPlace Systems, copyright 1988.
  62.  
  63. (2) Applications Programming in Smalltalk-80: How to Use
  64. Model-View-Controller (MVC) by Steve Burbeck, Softsmarts, Inc.,
  65. copyright 1987.
  66.  
  67. The first paper may still be in print.  Try info@parcplace.com.
  68.  
  69. The second paper is probably no longer available.  I think Softsmarts
  70. is the company that used to sell a version of Smalltalk for 80286
  71. machines but went out of business some years ago.  The phone number on
  72. the paper is listed as 415-327-8100 (Palo Alto, California).  You may
  73. try asking ParcPlace (or, less likely, Digitalk) if they have copies
  74. of Burbeck's paper.
  75.  
  76. --
  77. **********************************************************
  78. * Bruce Samuelson    Department of Linguistics     *
  79. * bruce@ling.uta.edu    University of Texas at Arlington *
  80. **********************************************************
  81.  
  82.  
  83. ---
  84.  
  85. 3.2)        Is there a Smalltalk bibliography?
  86.  
  87. Answer:
  88.  
  89.     There are many... here is one:
  90.  
  91. From: schultz@grebyn.com (Ronald Schultz)
  92. Newsgroups: comp.lang.smalltalk
  93. Subject: Smalltalk Relevant Texts
  94. Date: 10 Jan 92 16:08:05 GMT
  95. Organization: Grebyn Timesharing
  96.  
  97.  
  98. A list of Smalltalk-relevant texts.  Retrieved from the Digitalk
  99. forum on Compuserve.  If you know of any additional texts, please
  100. let me know.  Thanx.
  101.  
  102.  
  103. ==========================================================================
  104. Ron Schultz
  105. Berard Software Engineering, Inc.
  106. Columbus Ohio Office                           Headquarters
  107. 5634 Claire Court                              301 Lakeforest Drive
  108. Dublin, Ohio 43017                             Gaithersburg, Md. 20877
  109. Phone  (614) 798-0295                          (301) 417-9885
  110. FAX    (614) 798-0296                          (301) 417-0021
  111. =========================================================================
  112.  
  113. Smalltalk 80 The Language, Adele Goldberg & David Robson
  114.         Addison-Wesley 1989             ISBN 0-201-13688-0
  115.  
  116. Smalltalk 80 The Interactive Programming Environment, Adele Goldberg
  117.         Addison Wesley 1984             ISBN 0-201-11372-4
  118.  
  119. Smalltalk 80 Bits of History, Words of Advice , Glenn Krasner
  120.         Addison Wesley 1984             ISBN 0-201-11669-3
  121.  
  122. Inside Smalltalk Volume I, Wilf Lalonde & John Pugh
  123.         Prentice Hall 1991              ISBN 0-13-468414-1
  124.  
  125. Inside Smalltalk Volume II, Wilf Lalonde & John Pugh
  126.         Prentice Hall 1991              ISBN 0-13-465964-3
  127.  
  128. Object-Oriented Graphics, P. Wisskirchen
  129.     Springer-Verlag 1990        ISBN 3-540-52859-8
  130.  
  131. Practical Smalltalk: Using Smalltalk/V, Dan Shafer and Dean A. Ritz.
  132.         Springer-Verlag                 ISBN 0-387-97394-X
  133.  
  134. Rapid Prototyping for Object Oriented Systems, Mark Mullen
  135.         Addison Wesley 1990             ISBN 0-201-55024-5
  136.  
  137. Object-Oriented Design, Peter Coad and Ed Yourdon
  138.     Yourdon Press 1991        ISBN 0-13-630070-7
  139.  
  140. Object Oriented Programming for Artificial Intelligence, Ernest Tello
  141.         Addison Wesley 1989             ISBN 0-201-09228-x
  142.  
  143. The Well Tempered Object, Stephen Travis Pope
  144.         MIT Press 1991                  ISBN 0-262-16126-5
  145.  
  146. RefTalk/Vwin, David Carl O'Neal
  147.         NuVista Press 1991              ISBN pending
  148.  
  149. Human-Computer Interface Design Guidelines, C. Marlin Brown
  150.         Ablex Publishing 1989           ISBN 0-89391-332-4
  151.  
  152. Designing Object-Oriented Software,
  153.                 Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener
  154.         Prentice-Hall 1990              ISBN 0-13-629825-7
  155.  
  156. Object Oriented Programming with Smalltalk/V, Dusko Savic
  157.         Ellis Horwood 1990              ISBN 0-13-040692-9
  158.  
  159. An Introduction to Object Oriented Programming & Smalltalk
  160.         Lewis Pinson & Richard Wiener
  161.         Addison Wesley 1988             ISBN 0-201-19127-x
  162.  
  163. SAA Common User Access Advanced Interface Design Guide
  164.         IBM 1989                        IBM Document # SC26-4582-0
  165.  
  166. IBM Red Books----(available from your IBM representative
  167.                   contact your local office of IBM and request
  168.                   the placing of an IBM Red Book Order.  If you
  169.                   are an IBM customer, the books are free.  If you
  170.                   are not an IBM customer, the books may have a nominal
  171.                   fee.)----
  172.  
  173. A Practical Introduction to Object Oriented Programming
  174.         IBM 1990                        IBM Document # GG24-3641
  175.  
  176. Object Oriented Design - A preliminary Approach
  177.         IBM 1990                        IBM Document # GG24-3647
  178.  
  179. Developing a CUA Workplace Application
  180.         IBM 1990                        IBM Document # GG24-3580-00
  181.  
  182. Managing the Development of Object Oriented Applications
  183.         IBM 1990                        IBM Document # GG24-3581-00
  184.  
  185. Object Oriented Analysis of the ITSO Common Scenario
  186.         IBM 1990                        IBM Document # GG24-3566
  187.  
  188. CUA Evaluation
  189.         IBM 1990                        IBM Document # GG24-3456
  190.  
  191. SAA CUA '91 Guide
  192.         IBM 1991                        IBM Document # SC34-4289
  193.  
  194. SAA CUA '91 Reference
  195.         IBM 1991                        IBM Document # SC34-4290
  196.  
  197. SAA - A Guide for Evaluating Applications
  198.         IBM 1991                        IBM Document # G320-9803
  199.  
  200.  
  201. ---
  202.  
  203. 3.3)+        What are the "blue book", "purple book", etc?
  204.  
  205. Answer:
  206.  
  207. Date: Wed, 11 Nov 92 12:52:39 PST
  208. From: khaw@parcplace.com (Mike Khaw)
  209.  
  210.  
  211. blue
  212.         Goldberg, Adele, and David Robson, _Smalltalk-80: The Language
  213.         and Its Implementation_, Addison-Wesley, 1983. ISBN
  214.     0-201-11371-6. *Out of print*
  215.  
  216. orange
  217.         Goldberg, Adele, _Smalltalk-80: the Interactive Programming
  218.         Environment_, Addison-Wesley, 1984. ISBN 0-201-11372-4.
  219.  
  220. green
  221.         Krasner, Glenn, ed., _Smalltalk-80: Bits of History, Words of
  222.         Advice_, Addison-Wesley, 1983, ISBN 0-201-11669-3
  223.  
  224. purple
  225.         Goldberg, Adele, and David Robson, _Smalltalk-80: The Language_,
  226.         Addison-Wesley, 1989, ISBN 0-201-13688-0
  227.  
  228. The books are actually cream or tan. The color referred to is the color
  229. used as the background of the illustration on the front cover (as well
  230. as for the Addison-Wesley logo on the spine).
  231.  
  232. The purple book is an update/revision of the blue book, with the
  233. section on the abstract bytecode machine omitted (because it was out
  234. of date, according to Adele).
  235. ----------
  236.  
  237. Mike
  238.  
  239.  
  240. ---
  241.  
  242. 4.0)+    [Programming issues]
  243.  
  244. ---
  245.  
  246. 4.1)+        What are some "classic Smalltalk bugs", both in the
  247.             system and programmer domains?
  248.  
  249. Answer:
  250.  
  251. Newsgroups: comp.lang.smalltalk
  252. From: johnson@m.cs.uiuc.edu (Ralph Johnson)
  253. Subject: catalog of classic bugs
  254. Summary: version 1 of the catalog of classic Smalltalk bugs
  255. Organization: University of Illinois, Dept. of Comp. Sci., Urbana, IL
  256. Date: Wed, 12 Aug 1992 22:29:16 GMT
  257.  
  258. Classic Smalltalk Bugs
  259.  
  260. compiled by Ralph Johnson -- University of Illinois at Urbana-Champaign
  261.  
  262. Every programming system is prone to certain kinds of bugs.  A good
  263. programmer learns these bugs, and how to avoid them.  Smalltalk is
  264. no different.  Smalltalk eliminates lots of bugs that are common in
  265. other languages, such as bugs in linear search algorithms.  (Just use do:)
  266. However, it has its own set of classic bugs, which every new Smalltalk
  267. programmer runs into.
  268.  
  269. There are several reasons to collect classic bugs.  The first is that
  270. it will help experienced programmers test and debug programs, and can
  271. help us design better programs in the first place.  Second, if we
  272. teach these bugs up front then people should learn to be good
  273. programmers faster.  Third, perhaps we can redesign the system to
  274. eliminate some of these bugs, or we can write checking tools to
  275. spot them automatically.
  276.  
  277. Bug 1: Variable-sized classes
  278.  
  279. Set, Dictionary, and OrderedCollection are variable-sized classes
  280. that grow.  They grow by making a copy of themselves and "becoming"
  281. the copy.  If you add new instance variables to a subclass then
  282. you have to make sure that these instance variables get copied, too,
  283. or else you will mysteriously lose the values of the instance
  284. variables at random points in time.
  285.  
  286. Smalltalk-80 R4.0 (and probably some earlier versions) has a
  287. copyEmpty: method in Collection that you are supposed to override
  288. if you make a subclass of Collection that adds instance varaibles.
  289. The solution to this bug is to write a version of copyEmpty: for
  290. your class.
  291.  
  292. It has been suggested that it would be easy to write a tool that
  293. checked that every new subclass of Collection that added instance
  294. variables also defined a method for copyEmpty:.
  295.  
  296. Collection bugs
  297.  
  298. Bug 2: add: returns its argument
  299.  
  300. For every collection that grows, add: returns its argument,
  301. not the receiver, and people usually assume that it returns
  302. its receiver.  Thus, they write "(c add: x) add: y" when they should
  303. really write "c add: x; add: y" or else "c add: x. c add: y".
  304. Note that this is one of the good uses for "yourself", you can write
  305. (Set new
  306.     add: x;
  307.     add: y;
  308.     ...;
  309.     yourself)
  310. to make sure that you have the new Set.
  311.  
  312. Note that there are good reasons why add: returns its arguments,
  313. and even if there weren't, it is a very, very bad mistake to
  314. implement add: so that it returns the receiver, and so confuse
  315. every other Smalltalk programmer on the planet.
  316. Making add: return its argument often keeps you from resorting
  317. to temps, because you can create the argument to add: on the
  318. fly, and then do other things with it after the add:.  If you
  319. want to access the collection, you can do it with yourself or
  320. cascaded messages, as described above.
  321.  
  322. Bug 3: changing collection while iterating over it
  323.  
  324. You should never, never, never iterate over a collection which
  325. the iteration loop somehow modifies. Elements of the collection
  326. will be moved during the iteration, and elements might be missed
  327. or handled twice.  Instead, make a copy of the collection you
  328. are iterating over, i.e.
  329.    aCollection copy do: [:each | aCollection remove: each]
  330. is a good program, but if you leave out the copy then it isn't.
  331.  
  332. Mario Wolczko suggested a solution that catches this problem the
  333. instance it occurs (at some performance penalty of course).  The
  334. solution is to change the collection classes.  Each iteration method
  335. enters that collection into a set of collections being iterated over
  336. (IteratedCollections), executes the block, then removes the collection
  337. from the set.  Collections are usually (only?) modified using at:put:
  338. or basicAt:put:, so these are overriden to check that the collection
  339. is not in IteratedCollections.  If it is, an error is signalled.  You
  340. can either use this technique all the time, or you can just install
  341. these classes when you are testing and debugging your program.  These
  342. changes are packaged in a file Iterator-check.st that is available on
  343. the Manchester and Illinois servers.  On the Illinois server, it is
  344. in /pub/MANCHESTER/manchester/4.0/Iterator-check.st.
  345.  
  346. Bug 4: modifying copies of collections
  347.  
  348. It is common for an object to have an accessing method that returns a
  349. collection of objects that you can modify.  However, sometimes
  350. an object will return a copy of this collection to keep you from
  351. modifying it.  Instead, you are probably supposed to use messages
  352. that will change the collection for you.  The problem is that this
  353. is often poorly documented, and a person who likes to modify collections
  354. directly will run into problems.  See  "ScheduledControllers
  355. scheduledControllers" for an example.
  356.  
  357. The solution is to either provide better documentation, to claim
  358. that nobody is allowed to modify copies of collections returned
  359. from other objects, or to have objects that don't want their
  360. collections modified to return immutable versions of the collections
  361. that will give an error if you try to modify them.
  362.  
  363. Bug 5: Missing ^
  364.  
  365. It is very easy to leave off a return caret on an expression.
  366. If there is no return at the end of a method, Smalltalk returns
  367. the receiver of the method.  It only takes one missing return
  368. to mess up a long chain of method invocations.
  369.  
  370. Bug 6: Class instance creation methods
  371.  
  372. Writing a correct instance create method is apparently non-trivial.
  373. The correct way to do it is to have something like
  374. new
  375.   ^super new init
  376. where you redefine init in each class to initialize that class's
  377. instance variables.  In turn, init is defined as a class method
  378. init
  379.   super init "to initialize inherited instance variables"
  380.   "initialize variables that I define"
  381.  
  382. There are lots of ways to do this wrong.  Perhaps the most common
  383. is to forget the return, i.e. to write
  384.    super new init
  385. The result is that you have the class where you want the instance of
  386. the class.  This is a special case of bug #?.
  387.  
  388. Another error is to make an infinite loop by writing
  389.   ^self new init
  390.  
  391. If Smalltalk doesn't respond when you think it should, press ^C to
  392. get the debugger.  If the debugger shows a stack of "new" messages
  393. then you know you made this mistake.
  394.  
  395. Finally, you should only define "new" once for each class hierarchy
  396. and let subclasses inherit the method.  If you redefine it in each
  397. class then you will reinitialize the new object many times, wasting
  398. time and perhaps memory.
  399.  
  400. One way to keep this from happening is to make the "new" method in
  401. Object send init, and have the "init" method in Object do nothing.
  402. Of course, sometimes the version of init that you define has arguments,
  403. and this wouldn't help those cases.  It is probably better to rely
  404. on education to eliminate this kind of error.
  405.  
  406. Bug 7: Recompiling bugs in Smalltalk/V
  407.  
  408. It is easy to have references to obsolete objects in Smalltalk/V
  409. if you change code without cleaning things up carefully. For example,
  410. the associations whose keys are the referenced names in the Pool
  411. Dictionary are stored in the CompiledMethods at compile time. If you
  412. create a new version of the Pool Dictionary and install it by simple
  413. assignment then the compiled methods still refer to the old associations.
  414.  
  415. If you substitute a new instance of Dictionary or replace, rather than
  416. update an association in a pool dictionary, you have to recompile all
  417. methods using variables scoped to that Pool.
  418.  
  419. This is is also annoying when using ENVY, where the methods are under
  420. strict control. Perhaps Pool Dictionaries should be be first-class
  421. versioned pre-requisites of Classes, just like the class definition.
  422.  
  423. BTW we are using/VPM 1.4 with ENVY 1.3
  424.  
  425. 1. If you prune & graft a subtree of your class structure you have to
  426. make sure that all referencing methods are recompiled. Otherwise you
  427. will run (or your customer, because this is only detected at run time)
  428. into an Deleted class error message.
  429. Thomas Muhr posted a "Bite" a while ago to handle this problem for
  430. Smalltalk/V 286.
  431.  
  432. Bug 8: Opening windows
  433.  
  434. Neither Smalltalk-80 nor Smalltalk-V return to the sender when a
  435. new window is opened in a standard fashion. Thus, any code after
  436. a message to open a window will never be executed.  This is the
  437. cause of much frustration.  For example, if you try to open two
  438. windows at once, i.e.
  439.  
  440. TextPane new open.
  441. TextPane new open
  442.  
  443. is Smalltalk-V and
  444.  
  445. aScheduledWindow1 open.
  446. aScheduledWindow2 open
  447.  
  448. in Smalltalk-80, then you will get only one open window,
  449. and one forgotten piece of code.
  450.  
  451. I don't know the fix for Smalltalk-V.  The fix for Smalltalk-80 is
  452. to use the openNoTerminate method to open the window, which does
  453. not transfer control to it.  A useful trick is to store the new
  454. window in a global variable so you can test it.  In earlier
  455. versions of Smalltalk-80, open would obliterate the current
  456. process, not just never return to it.  In Version 4.1 that
  457. never happens.
  458.  
  459. Bug 9: blocks
  460.  
  461. Blocks are very powerful, and it isn't hard for programmers to get
  462. into trouble trying to be too tricky.  To compound problems, the
  463. two versions of Smalltalk have slightly different semantics for
  464. blocks, and one of them often leads to problems.
  465.  
  466. Originally blocks did not have truly local variables.  The block
  467. parameters were really local variables in the enclosing method.
  468. Thus,
  469.  
  470. | x y |
  471.   x := 0.
  472.   (1 to: 100) do: [:z | x := x + z]
  473.  
  474. actually had three temporaries, x, y, and z.  This leads to bugs
  475. like the following
  476.  
  477. someMethod
  478.  
  479.  | a b  |
  480.  a := #(4 3 2 1).
  481.  b := SortedCollection sortBlock: [:a :b | a someOperation: b].
  482.  b addAll: a.
  483.  Transcript show: a.
  484.  
  485. When elements are added to b, the sortBlock is used to tell where
  486. to put them, but this will change a and b.  addAll: is OK, but
  487. the "a" that gets displayed on the transcript will be an integer,
  488. not an array.
  489.  
  490. Early versions of Smalltalk-80 (2.4 and before?) implemented blocks
  491. like this, and Smalltalk/V still does.  However, in current PPS
  492. implementations, blocks are close to being closures. You can declare
  493. variables local to a block, and the names of the block parameters are
  494. local to the block. Most people agree that this is a much better
  495. definition of blocks than the original one.  Nevertheless, people
  496. planning to use Smalltalk/V should realise that it has a different
  497. semantics for blocks.
  498.  
  499. This difference can lead to some amusing problems.  For example, here
  500. is some code written by someone who had obviously learned Scheme.
  501.  
  502. | anotherArray aBlockArray |
  503.  
  504. aBlockArray := Array new: 4.
  505. anotherArray := #(1 2 4 8).
  506.  
  507. 1 to: 4 do: [ :anIndex |
  508.  aBlockArray at: anIndex put: [ (anotherArray at: anIndex) * 2 ]].
  509.  
  510.  
  511. The programmer expected that each block would be stored in the array
  512. along with its own value of anIndex.  If anIndex were just a local
  513. variable of the method then this will not work.  It assumes that
  514. each execution of the block gets its own version of anIndex, and
  515. Smalltalk/V and old Smalltalk-80 actually make each execution share
  516. the same version.
  517.  
  518. So, if you are using Smalltalk/V then be careful not to reuse the
  519. names of arguments of blocks unless you know that the blocks are
  520. not going to have their lives overlap.  Thus,
  521.  
  522.   aCollect do: [:i | ...].
  523.   bCollect do: [:i | ...].
  524.  
  525. is probably OK because do: does not store its argument, so the
  526. blocks will be garbage by the time the method is finished.
  527. However, if the first block were stored in a variable somewhere
  528. and evaluated during the execution of the second block then
  529. problems would probably occur.
  530.  
  531. Bug 10: Smalltalk/V class library
  532. Thomas Muhr makes these comments about bugs in the Smalltalk/V
  533. class library that you should know if you want to keep your
  534. programs fast and correct.
  535.  
  536. 2. Never use symbols to label objects if you are dealing with many
  537. objects. This will slow down your system to an almost dead halt. Use
  538. strings instead.
  539. 3. Never use Sets when you can otherwise assure the uniqueness. Look
  540. at the implementation of "add:" for Sets and you'll know what I mean:
  541. on every "add:" the new element is compared to all others resulting
  542. into a nonlinear time for adding to Sets.
  543. 4. Do not think that if you "collect:" something from a
  544. SortedCollection, that your result will be sorted as the origin,
  545. unless you use the default sortBlock. This is one of the bugs provided
  546. by the language vendor
  547.  
  548.  
  549.  
  550. Many thanks to the many people who contributed bugs or solutions to bugs
  551. to the list.  These include
  552.  
  553.  muhr@opal.cs.tu-berlin.de (Thomas Muhr)
  554.  steinman@is.morgan.com (Jan Steinman)
  555.  knight@mrco.carleton.ca (Alan Knight)
  556.  mario@cs.man.ac.uk (Mario Wolczko)
  557.  peterg@netcom.com (Peter Goodall)
  558.  Aad Nales <nales@cs.few.eur.nl>
  559.  scrl@otter.hpl.hp.com (Simon Lewis)
  560.  msmith@volcano.ma30.bull.com (Mike Smith)
  561.  dai@mrco.carleton.ca (Naci Dai)
  562.  dcr0@speedy.enet.dec.com (Dave Robbins)
  563.  randy@tigercat.den.mmc.com (Randy Stafford)
  564.  Hubert.Baumeister@mpi-sb.mpg.de (Hubert Baumeister)
  565.  eliot@dcs.qmw.ac.uk (Eliot Miranda)
  566.  dmm@aristotle.ils.nwu.edu (donald)
  567.  amir@is.morgan.com (Amir Bakhtiar)
  568.  Kurt Piersol <Piersol@Apple.com>
  569.  sullivan@ticipa.ti.com (Michael Sullivan)
  570.  terry@zoe.network23.com (Terry)
  571.  brent@uwovax.uwo.ca (Brent Sterner)
  572.  frerk@informatik.uni-kl.de
  573.  nicted@toz.buffalo.ny.us (Nicole Tedesco)
  574.  riks@ogicse.ogi.edu (Rik Fischer Smoody)
  575.  marten@feki.toppoint.de (Marten Feldtmann)
  576.  
  577. Comments and additions are welcome.  Please post to comp.lang.smalltalk
  578. or e-mail to johnson@cs.uiuc.edu.
  579.  
  580. ---
  581.  
  582. End of Smalltalk FAQ
  583.  
  584. Xref: bloom-picayune.mit.edu alt.privacy:5256 misc.legal:54792 news.answers:4745 alt.society.civil-liberty:7994 comp.society.privacy:855
  585. Path: bloom-picayune.mit.edu!senator-bedfellow.mit.edu!senator-bedfellow.mit.edu!usenet
  586. From: hibbert@xanadu.com (Chris Hibbert)
  587. Newsgroups: alt.privacy,misc.legal,news.answers,alt.society.civil-liberty,comp.society.privacy
  588. Subject: Social Security Number FAQ
  589. Supersedes: <ssn-privacy_723794529@athena.mit.edu>
  590. Followup-To: alt.privacy
  591. Date: 22 Dec 1992 06:02:26 GMT
  592. Organization: Massachvsetts Institvte of Technology
  593. Lines: 368
  594. Approved: news-answers-request@MIT.Edu
  595. Expires: 19 Jan 1993 06:02:09 GMT
  596. Message-ID: <ssn-privacy_725004129@athena.mit.edu>
  597. NNTP-Posting-Host: pit-manager.mit.edu
  598. Keywords: Social Security Number, SSN, privacy
  599. X-Last-Updated: 1992/12/01
  600. Last-Modified: Nov 30, 1992
  601. Last-Modification: retrieving copies of this posting
  602.  
  603. Archive-Name: ssn-privacy
  604.  
  605. [I no longer have a way to read usenet news.  If you have comments on
  606. the following, please send them to hibbert@xanadu.com.]
  607.  
  608.  
  609.  
  610.        What to do when they ask for your Social Security Number
  611.  
  612.                            by Chris Hibbert
  613.  
  614.                         Computer Professionals
  615.                       for Social Responsibility
  616.  
  617.  
  618. Many people are concerned about the number of organizations asking for their
  619. Social Security Numbers.  They worry about invasions of privacy and the
  620. oppressive feeling of being treated as just a number.  Unfortunately, I
  621. can't offer any hope about the dehumanizing effects of identifying you with
  622. your numbers.  I *can* try to help you keep your Social Security Number from
  623. being used as a tool in the invasion of your privacy.
  624.  
  625. Surprisingly, government agencies are reasonably easy to deal with; private
  626. organizations are much more troublesome.  Federal law restricts the agencies
  627. at all levels of government that can demand your number and a fairly
  628. complete disclosure is required even if its use is voluntary.  There are no
  629. comparable Federal laws restricting the uses non-government organizations
  630. can make of it, or compelling them to tell you anything about their plans.
  631. Some states have recently regulations on collection of SSNs by private
  632. entities.  With private institutions, your main recourse is refusing to do
  633. business with anyone whose terms you don't like.
  634.  
  635.  
  636.                             Short History
  637.  
  638. Social Security numbers were introduced by the Social Security Act of 1935.
  639. They were originally intended to be used only by the social security
  640. program, and public assurances were given at the time that use would be
  641. strictly limited.  In 1943 Roosevelt signed Executive Order 9397 which
  642. required federal agencies to use the number when creating new record-keeping
  643. systems.  In 1961 the IRS began to use it as a taxpayer ID number.  The
  644. Privacy Act of 1974 required authorization for government agencies to use
  645. SSNs in their data bases and required disclosures (detailed below) when
  646. government agencies request the number.  Agencies which were already using
  647. SSN as an identifier before January 1, 1975 were allowed to continue using
  648. it.  The Tax Reform Act of 1976 gave authority to state or local tax,
  649. welfare, driver's license, or motor vehicle registration authorities to use
  650. the number in order to establish identities.  The Privacy Protection Study
  651. Commission of 1977 recommended that the Executive Order be repealed after
  652. some agencies referred to it as their authorization to use SSNs.  I don't
  653. know whether it was repealed, but that practice has stopped.
  654.  
  655. Several states use the SSN as a driver's license number, while others record
  656. it on applications and store it in their database.  Some states that
  657. routinely use it on the license will make up another number if you insist.
  658. According to the terms of the Privacy Act, any that have a space for it on
  659. the application forms should have a disclosure notice.  Many don't, and
  660. until someone takes them to court, they aren't likely to change.  (Though
  661. New York recently agreed to start adding the notice on the basis of a letter
  662. written by a reader of this blurb.)
  663.  
  664. The Privacy Act of 1974 (5 USC 552a) requires that any federal, state, or
  665. local government agency that requests your Social Security Number has to
  666. tell you four things:
  667.  
  668. 1:  Whether disclosure of your Social Security Number is required or
  669.     optional,
  670.  
  671. 2:  What law authorizes them to ask for your Social Security Number,
  672.  
  673. 3:  How your Social Security Number will be used if you give it to them,
  674.     and
  675.  
  676. 4:  The consequences of failure to provide an SSN.
  677.  
  678. In addition, the Act says that only Federal law can make use of the Social
  679. Security Number mandatory.  So anytime you're dealing with a government
  680. institution and you're asked for your Social Security Number, just look for
  681. the Privacy Act Statement.  If there isn't one, complain and don't give your
  682. number.  If the statement is present, read it.  If it says giving your
  683. Social Security Number is voluntary, you'll have to decide for yourself
  684. whether to fill in the number.
  685.  
  686.                         Private Organizations
  687.  
  688. The guidelines for dealing with non-governmental institutions are much more
  689. tenuous.  Most of the time private organizations that request your Social
  690. Security Number can get by quite well without your number, and if you can
  691. find the right person to negotiate with, they'll willingly admit it.  The
  692. problem is finding that right person.  The person behind the counter is
  693. often told no more than "get the customers to fill out the form completely."
  694.  
  695. Most of the time, you can convince them to use some other number.  Usually
  696. the simplest way to refuse to give your Social Security Number is simply to
  697. leave the appropriate space blank.  One of the times when this isn't a
  698. strong enough statement of your desire to conceal your number is when
  699. dealing with institutions which have direct contact with your employer.
  700. Most employers have no policy against revealing your Social Security Number;
  701. they apparently believe that it must have been an unintentional slip that
  702. you didn't give out your SSN.
  703.  
  704. Public utilities (gas, electric, phone, etc.) are considered to be private
  705. organizations under the laws regulating SSNs.  Most of the time they ask for
  706. an SSN, and aren't prohibited from asking for it, but they'll usually relent
  707. if you insist.  Ask to speak to a supervisor, insist that they document a
  708. corporate policy requiring it, ask about alternatives, ask why they need it
  709. and suggest alternatives.
  710.  
  711.  
  712.       Lenders and Borrowers (those who send reports to the IRS)
  713.